package org.su.generalmvc.util;

import org.apache.commons.lang.StringUtils;


public class Assert {

	/**
	 * 断言对象不为空
	 * @param object 被断言的对象
	 * @param message 对象为空异常信息
	 */
	public static void notNull(Object object, String message) {
			if(object == null){
				throw new IllegalArgumentException(message);
			}
	}
	
	/**
	 * 断言对象不为空
	 * @param object 被断言的对象
	 */
	public static void notNull(Object object) {
			if(object == null){
				throw new IllegalArgumentException("[Assertion failed] - this argument is required; it must not be null");
			}
	}
	
	/**
	 * 断言对象为空 如果不为空则抛出异常
	 * @param object 被断言的对象
	 */
	public static void isNull(Object object,String message) {
		if(object != null){
			throw new IllegalArgumentException(message);
		}
	}
	
	/**
	 * 断言对象为空 如果不为空则抛出异常
	 * @param object 被断言的对象
	 */
	public static void isNull(Object object) {
		isNull(object,"[Assertion failed] - the object argument must be null");
	}
	
	/**
	 * 断言字符串不为空 如果为空则抛出异常
	 * @param str 被断言的字符串
	 * @param message 对象为空异常信息
	 */
	public static void notBlank(String str,String message) {
		if(StringUtils.isBlank(str)){
			throw new IllegalArgumentException(message);
		}
	}
	
	/**
	 * 断言字符串不为空 如果为空则抛出异常
	 * @param str 被断言的字符串
	 */
	public static void notBlank(String str) {
		notBlank(str, "[Assertion failed] - the string argument must not be null or empty");
	}

	/**
	 * 断言表达式为真， 如果为false则抛出异常
	 * @param expression 断言的表达式
	 */
	public static void isTrue(boolean expression,String message) {
		if (!expression) {
			throw new IllegalArgumentException(message);
		}
	}
	
	/**
	 * 断言表达式为真， 如果为false则抛出异常
	 * @param expression
	 */
	public static void isTrue(boolean expression) {
		isTrue(expression, "[Assertion failed] - this expression must be true");
	}
	
	/**
	 * 断言表达式为假， 如果为false则抛出异常
	 * @param expression 断言的表达式
	 */
	public static void isFalse(boolean expression,String message) {
		if (expression) {
			throw new IllegalArgumentException(message);
		}
	}
	
	/**
	 * 断言表达式为假， 如果为false则抛出异常
	 * @param expression
	 */
	public static void isFalse(boolean expression) {
		isFalse(expression, "[Assertion failed] - this expression must be False");
	}
}
